package com.antu.first.service;

import com.antu.first.bean.DiscountCoupon;
import com.antu.first.bean.Merchant;
import com.antu.first.bean.User;
import com.antu.first.dto.DiscountCouponExecution;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

public interface DiscountCouponService {
    /**
     * 查询所有优惠券信息
     * @param uId
     * @param pageIndex
     * @return
     */
    public DiscountCouponExecution queryAllsByUid(int uId, int canUse, int pageIndex);
    /**
     * 商家添加优惠券
     * @param discountCoupon 优惠券对象
     * @return 影响行数
     */
    public Map<String,Object> addDiscountCoupon(DiscountCoupon discountCoupon) throws Exception;
    /**
     *根据面值查询优惠券
     * @param discountCoupon 优惠券对象
     * @return 优惠券集合
     * @throws Exception 异常
     */
    public Map<String,Object> selectDiscountCouponByValue(DiscountCoupon discountCoupon) throws Exception;
    /**
     * 根据时间区间查询优惠券
     * @param discountCoupon 优惠券对象
     * @return 优惠券集合
     * @throws Exception 异常
     */
    public Map<String,Object> selectDiscountCouponByDate(DiscountCoupon discountCoupon) throws Exception;

    /**
     * 查询还未使用的优惠券
     * @param discountCoupon 优惠券对象
     * @return 优惠券集合
     * @throws Exception 异常
     */
    public Map<String,Object> selectDiscountCouponDateByUnuse(DiscountCoupon discountCoupon) throws Exception;
    /**
     * 查询使用中的优惠券
     * @param discountCoupon 优惠券对象
     * @return 优惠券集合
     * @throws Exception 异常
     */
    public Map<String,Object> selectDiscountCouponDateByUsing(DiscountCoupon discountCoupon) throws Exception;
    /**
     * 查询已经使用的优惠券
     * @param discountCoupon 优惠券对象
     * @return 优惠券集合
     *@throws Exception 异常
     */
    public Map<String,Object> selectDiscountCouponDateByUsed(DiscountCoupon discountCoupon) throws Exception;

    /**
     * 根据ID修改优惠券信息
     * @param discountCoupon 优惠券对象
     * @return map集合
     * @throws Exception 异常
     */
    public Map<String,Object> updateDiscountCouponInfor(DiscountCoupon discountCoupon) throws  Exception;

    /**
     * 根据ID删除优惠券
     * @param discountCoupon 优惠券对象
     * @return map集合
     * @throws Exception 异常
     */
    public Map<String,Object> deleteDiscountCouponById(DiscountCoupon discountCoupon) throws  Exception;

    /**
     * 根据商家ID查询所有优惠券
     * @param request 请求
     * @param pageIndex 查询起始页
     * @param pageSize 分页条数
     * @return map集合
     */
    public Map<String,Object> selectAllDiscountCoupon(HttpServletRequest request,int pageIndex,int pageSize) throws Exception ;

    /**
     * 用户查询与自己相关的优惠券
     * @param user
     * @return
     */
    Map<String,Object> usersGetAlTheCoupons(User user,Integer status);

    /**
     * 用户抢优惠券
     * @param discountCoupon
     * @return
     */
    Map<String,Object> userRobStamps(DiscountCoupon discountCoupon);

    /**
     * 根据优惠券ID查询优惠券
     * @param id 优惠券ID
     * @return
     */
    public DiscountCoupon queryDiscountCouponById(int id);
}
